package cn.code.mycloud.module.envir.service.aqi;

import cn.code.mycloud.framework.common.pojo.PageResult;
import cn.code.mycloud.module.envir.controller.admin.aqi.vo.AqiAssignReqVO;
import cn.code.mycloud.module.envir.controller.admin.aqi.vo.AqiPageReqVO;
import cn.code.mycloud.module.envir.controller.admin.aqi.vo.AqiSaveReqVO;
import cn.code.mycloud.module.envir.controller.admin.statistics.vo.ProvinceAqiVO;
import cn.code.mycloud.module.envir.dal.dataobject.aqi.AqiDO;

import javax.validation.Valid;
import java.util.List;
import java.util.Map;

/**
 * AQI Service 接口
 *
 * @author 超级管理员
 */
public interface AqiService {

    /**
     * 创建AQI
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createAqi(@Valid AqiSaveReqVO createReqVO);

    /**
     * 更新AQI
     *
     * @param updateReqVO 更新信息
     */
    void updateAqi(@Valid AqiSaveReqVO updateReqVO);

    /**
     * 删除AQI
     *
     * @param id 编号
     */
    void deleteAqi(Long id);

    /**
     * 获得AQI
     *
     * @param id 编号
     * @return AQI
     */
    AqiDO getAqi(Long id);

    /**
     * 获得AQI分页
     *
     * @param pageReqVO 分页查询
     * @return AQI分页
     */
    PageResult<AqiDO> getAqiPage(AqiPageReqVO pageReqVO);

    void assignGridUser(@Valid AqiAssignReqVO aqiAssignReqVO);

    List<AqiDO> selectAll();

    Map<String, Long> selectOneAqiWithProvince(String columnName);

    List<AqiDO> selectAllDone();

    Map<String, Long> selectAllAqiWithProvince();

    List<ProvinceAqiVO> selectAqiProvinceList();

}